package controller

import (
	"token-centre/global"
	"token-centre/platform"

	"github.com/gin-gonic/gin"
)

// 平台选择器
func refreshTokenSwitch(PlateformName string, AppName string) {
	switch PlateformName {
	case "微信公众号":
		platform.WeChatOfficialAccountsToken(PlateformName, AppName)
	default:
		panic("refreshTokenSwitch未匹配到相应PlateformName：" + PlateformName)
	}
}

func TokenGet(c *gin.Context) {

	var PlateformName = c.Query("PlateformName")
	var AppName = c.Query("AppName")

	// log.Println(PlateformName)
	// return

	var token = global.GetToken(PlateformName, AppName)
	// log.Println(token)

	if token == nil {
		// 不存在 刷新 token
		refreshTokenSwitch(PlateformName, AppName)
		// 重新获取 token
		token = global.GetToken(PlateformName, AppName)
		if token == nil {
			panic(PlateformName + AppName + " token不存在")
		}
	}

	// log.Println(token)
	if global.IsExpired(token) {
		// 过期 刷新 token
		refreshTokenSwitch(PlateformName, AppName)
		// 重新获取 token
		token = global.GetToken(PlateformName, AppName)
		if global.IsExpired(token) {
			panic(PlateformName + AppName + " token失效，且刷新无效")
		}
	}

	Rtn(c, "成功", token["token"])
}
